package easy;

/**
 * @author admin
 * 283. 移动零
 * 解题思路：双指针法，一开始left和right指针同时指向第一个数字。right指针指向的数字不为0时，
 * 交换左右指针指向的数，并将left指针加1。当right指针指向的数字为0时，right加1。
 */
public class LeeCode283 {

    public void moveZeroes(int[] nums) {
        int n = nums.length, left = 0, right = 0;
        while (right < n) {
            if (nums[right] != 0) {
                swap(nums, left, right);
                left++;
            }
            right++;
        }
    }

    public void swap(int[] nums, int left, int right) {
        int temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    }

    public static void main(String[] args) {

        int [] res = new int[]{ 0,1,0,3,12};
        new LeeCode283().moveZeroes(res);
    }
}
